package com.sky.controller.admin;

import com.sky.dto.FaqDTO;
import com.sky.entity.Faq;
import com.sky.result.Result;
import com.sky.service.FaqService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * FAQ管理控制器
 */
@RestController
@RequestMapping("/admin/faq")
@Api(tags = "FAQ管理相关接口")
@Slf4j
public class FaqController {

    @Autowired
    private FaqService faqService;

    /**
     * 新增FAQ
     * @param faqDTO FAQ数据传输对象
     * @return 结果
     */
    @PostMapping
    @ApiOperation("新增FAQ")
    public Result<Long> add(@RequestBody FaqDTO faqDTO) {
        log.info("新增FAQ: {}", faqDTO);
        Long id = faqService.add(faqDTO);
        return Result.success(id);
    }

    /**
     * 更新FAQ
     * @param faqDTO FAQ数据传输对象
     * @return 结果
     */
    @PutMapping
    @ApiOperation("更新FAQ")
    public Result<String> update(@RequestBody FaqDTO faqDTO) {
        log.info("更新FAQ: {}", faqDTO);
        faqService.update(faqDTO);
        return Result.success();
    }

    /**
     * 删除FAQ
     * @param id FAQ ID
     * @return 结果
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除FAQ")
    public Result<String> delete(@PathVariable Long id) {
        log.info("删除FAQ: {}", id);
        faqService.deleteById(id);
        return Result.success();
    }

    /**
     * 获取所有FAQ
     * @return FAQ列表
     */
    @GetMapping("/list")
    @ApiOperation("获取所有FAQ")
    public Result<List<Faq>> list() {
        log.info("获取所有FAQ");
        List<Faq> list = faqService.listAll();
        return Result.success(list);
    }

    /**
     * 根据ID获取FAQ
     * @param id FAQ ID
     * @return FAQ对象
     */
    @GetMapping("/{id}")
    @ApiOperation("根据ID获取FAQ")
    public Result<Faq> getById(@PathVariable Long id) {
        log.info("根据ID获取FAQ: {}", id);
        Faq faq = faqService.getById(id);
        return Result.success(faq);
    }

    /**
     * 根据分类获取FAQ列表
     * @param category 分类
     * @return FAQ列表
     */
    @GetMapping("/category/{category}")
    @ApiOperation("根据分类获取FAQ列表")
    public Result<List<Faq>> listByCategory(@PathVariable String category) {
        log.info("根据分类获取FAQ列表: {}", category);
        List<Faq> list = faqService.listByCategory(category);
        return Result.success(list);
    }

    /**
     * 根据关键词搜索FAQ
     * @param keyword 关键词
     * @return FAQ列表
     */
    @GetMapping("/search")
    @ApiOperation("根据关键词搜索FAQ")
    public Result<List<Faq>> search(@RequestParam String keyword) {
        log.info("根据关键词搜索FAQ: {}", keyword);
        List<Faq> list = faqService.searchByKeyword(keyword);
        return Result.success(list);
    }
} 